23

» WarCraft 3 / Проблема с условием

Похожие вопросы:

ответ
Есть проверка IsUnitDead, где проверяется тип и состояние IsUnitType(u, UNIT_TYPE_DEAD) но никогда не было проблем с проверкой хп.
Так же насколько я помню GetWidgetLife( unit ) > 0.0 или GetUnitState( unit, UNIT_STATE_LIFE ) > 0.405.
ответ
~8gabriel8:
Пока нет желания разбираться, что у тебя так, а что не так. Но вижу, что переменная Window не назначена окну, а ещё как бы создаются в цикле одновременно 10 окон, которые потом все одновременно ждут 50 секунд. Вот скрин действий триггера вместо двух твоих, секунда ожидания поставлена для того, чтобы увидеть пропадание окна таймера.
ответ
~8gabriel8:
Это событие срабатывает лишь при старте карты, чтобы сделать срабатывание, когда после потасовки остаётся один юнит, логично было бы сделать событие Generic unit Умирает. В условии учитываются не только живые юниты, но и их трупы, пока не разложатся, то есть будет срабатывать событие юнит Умирает, в условии юнитов в области будет больше 1, так как будут считаться мёртвые юниты, триггер так и не будет срабатывать, если через минуту какой-то юнит на карте не умрёт. Потому в условии нужно указывать не просто юнитов в области, а юниты в области matching condition, где поставишь (Matching unit) is alive равно Да. А чтобы не учитывались здания и призванные юниты, нужно вместо условия (Matching unit) is alive равно Да выбрать в низу списка And, появится два условия, в первое ставишь (Matching unit) is alive равно Да, во второе опять And и аналогично выбираешь, (Matching unit) is Здание равно Нет и что-то такое же на призванных (summon).
Только в действии тоже укажи, что живой, не Здание и не призванный, а то кого-то из них может убить.
ответ
Остальные не помню, откуда.
Сборку игры я спрашивал.
WAGARAX:
Время - 1.1 сек
Верни 5 секунд в игровых константах.
А ещё перезагрузи компьютер.

23

» WarCraft 3 / Оптимальная реализация события каста

Похожие вопросы:

ответ
Ну, перенеси всё это clawbfs.ucoz.ru/forum/3-2-1 и итемы и две игровые карты с кучей режимов и сотни шапок и т. д. + в 2 раза больше новых идей clawbfs.ucoz.ru/forum/7 clawbfs.ucoz.ru/forum/16-1571-1 clawbfs.ucoz.ru/forum/9 со всеми функциями варкрафта (а их там всё же не так уж и мало) в игру на юнити или ещё куда в один присест, сделай дело доброе.
Бтв, про сбор команды - для продвинутых сущностей нередко исправлять за другими оказывается тяжелее, чем делать самому, важно создать максимально комфортные условия для созидания, вот для чего деньги не лишние, а уж дело и самому можно делать.
И, да, тема-то не про то, надо это или не надо, а про то, как лучше это сделать, я про это и в стартовом сообщении написал.
Я на крайний сам вопрос по варианту 3 проверю и/или будет сделан выбор между третьим вариантом, вторым, каким-то ещё и отказом от Cooldown Reduction, но если кто поможет - спасибо.
ответ
то скорость разная, то вылетают не из героя а из какой то псевдо центральной точки
в общем я полностью добился желаемого результата, никакого прерывания, ни каких лагов и странных поведений (то что снаряды врезаются в трупы так и задумано =))
вот мой код
//! beginusercode

--какие то общие функции
function MoveX (x,  Dist,  Angle)
    return x+Dist*Cos(Angle*0.0175)
end
function MoveY (x,  Dist,  Angle)
    return x+Dist*Sin(Angle*0.0175)
end
function AbilityId(id)
    return id:byte(1) * 0x1000000 + id:byte(2) * 0x10000 + id:byte(3) * 0x100 + id:byte(4)
end

function Out(x,y)
    return ( ( GetRectMinX(bj_mapInitialPlayableArea) <= x ) and ( x <= GetRectMaxX(bj_mapInitialPlayableArea) ) and ( GetRectMinY(bj_mapInitialPlayableArea) <= y ) and ( y <= GetRectMaxY(bj_mapInitialPlayableArea) ) ) or IsTerrainPathable(x, y, PATHING_TYPE_WALKABILITY) == false
end

GetTerrainZ_location = Location(0, 0)
function GetTerrainZ(x,y)
    MoveLocation(GetTerrainZ_location, x, y);
    return GetLocationZ(GetTerrainZ_location);
end

function ehandler( err )
    print( "ERROR:", err )
end
--/////// глобалки (хотя какая разница где объявить то)
perebor=CreateGroup()

--/////// триггер

    local trigger = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1, 1 do
        TriggerRegisterPlayerUnitEvent(trigger, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT)
    end
    TriggerAddCondition(trigger, Condition(function() return
        GetOwningPlayer(GetTriggerUnit()) == Player(0)
    end))
local d=0
TriggerAddAction(trigger, function()
    local u=GetTriggerUnit()
    local z=GetTerrainZ(GetUnitX(u),GetUnitY(u))
        print("perodstart")
        TimerStart(CreateTimer(), 0.1, true, function()
        d=d+1

 --print("abiclick "..d)
 -- будущая фукция запуска снаряда
 local x=GetUnitX(u)
 local y=GetUnitY(u)
 local eff=AddSpecialEffect("Abilities\\Weapons\\DemolisherFireMissile\\DemolisherFireMissile.mdl", x, y)
 local d2=1000
 local a=GetUnitFacing(u)

 TimerStart(CreateTimer(), 0.032, true, function()
 d2=d2-10
 x=MoveX(x,25,a)
 y=MoveY(y,25,a)
 BlzSetSpecialEffectPosition(eff, x, y, GetTerrainZ(x,y)+30)
-- урон
local e=nil
GroupEnumUnitsInRange(perebor,x,y,80,null)
while true do
	e = FirstOfGroup(perebor)
	if e == nil then break end
if IsUnitEnemy(e, GetOwningPlayer(u)) then
    UnitDamageTarget( u, e, BlzGetUnitBaseDamage(u, 1), false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS )
   -- print("наносим урон")
    DestroyEffect(eff)
    eff=nill 
end

	GroupRemoveUnit(perebor,e)
end

--print(d2)

 if d2<=0 or  Out(x,y)==false or eff==nil then
  --  print("УМРИ!")
    DestroyEffect(eff)
    DestroyTimer(GetExpiredTimer())
 end

 end)

    end)
end)





//! endusercode
а вот и карта
Выражаю огромную благодарность NazarPunk, и Prog за оказанную помощь и наставления
Выводы:
Более навороченные (в техническом плане) способы не всегда самые оптимальные
Точно также можно двигать эффекты и на мемхаке, так что 126 пат так же может удостоится высокой производительностью для огромного количества снарядов
Мой комп держит на 1 экране около 700 объектов в режиме 60+ FPS (с отключенной вертикальной синхронизацией, это когда макс фпс за 200)

23

» WarCraft 3 / Дроп предметов из инвентаря героя

Похожие вопросы:

ответ
Ну задай рандомную переменную от 1 до 6 и дропай предмет из слота под этим номером
Единственная проблема - если у носильщика меньше 6 слотов, то появляется вероятность не дропнуть ничего, ну тут можно циклом как-то, типа если дропнутый предмет = нет предмета, повторить (ток еще, чтобы цикл не мог стать вечным, проверить, что у юнита хоть 1 предмет вообще есть)

23

» WarCraft 3 / Визуальная перезарядка пассивной способности

Похожие вопросы:

ответ
Naadir, Ну хаком на память, чтобы совсем пассивка не кликабельная, только мемхак. Ну есть еще костыль с перерождением, если убить его владельца то пойдет кд. Иначе костыль с активкой.
ответ
на основе эксгумация труповозок можно сделать пасивки с колдаунами
вот наработка

23

» WarCraft 3 / Герои

Похожие вопросы:

ответ
Лучший вариант - морф через руну
ответ
Я же делал наработку выбора героев на GUI. Можете там посмотреть.
ответ
Поставить лимит на героя. Действия - Игрок - Установить лимит...

23

» WarCraft 3 / Заклинания

Похожие вопросы:

ответ
Steal nerves:
не ясно какая проблема. хочешь чтобы не смешивалось содержимое внутри спелбуков? меняй приказ у спелбуков см. тему
ответ
Так же как уровень любой способности - Set Level Of Ability/Increase Level Of Ability.
Если спеллбук предметметный, уровень сбросится если выбросить книгу.
ответ
Black Soul:
Сначала добавь все способности, которые тебе нужны, в книгу заклинаний. Во время инициализации карты заблокируй для игрока способности, которые открываются при выполнении заданий.
После выполнения заданий разблокируй их.
ответ
~8gabriel8:
Там есть для Игрока (или Игры) действие Force UI Key. Назначаешь горячую клавишу книге и при событии выбора указываешь в этом действии свою клавишу.
Только событие выбора может реагировать с небольшой задержкой, достаточной, чтобы рассмотреть кнопки на панели приказов. Если это надо обойти, есть два варианта:
  • периодическим таймером на 0.03 секунды проверять, выбран ли юнит;
  • сделать два одинаковых типа юнитов, один из которых с классификацией страж, при выборе стража накладывать морф и открывать книгу (может потребоваться задержка), при снятии выбора накладывать обратный морф. Статья про морфы есть у quq_CCCP.

23

» WarCraft 3 / Не выпадающие предметы.

Похожие вопросы:

ответ
ответ
Stalker5500, как ты описал- должно работать.
Только сделай в событие либо только Нейтрально-враждебный умирает, либо Событие- боевая единица умирает, а в условие- Владелец умирающего - Нейтрально-враждебный.
А дальше в действиях есть такая конструкция в разделе Общие параметры if/then/else. Используй ее и будет тебе счастье

23

» WarCraft 3 / Рудник

Похожие вопросы:

ответ
~8gabriel8:
Если изменить не получается, то можно триггерно добавить. Категория Нейтральное здание.
ответ
В редакторе спокойно ставится, а вот в самой игре раб не может поставить ферму близко к руднику)
Это захардкожено в самой игре. Если изменение карты путей ратуши не поможет, то уже ничего не поможет.
ответ
Black Soul:
Оплетенные рудники считаются транспортом. Светлячков, которые находятся в них, можно отловить условиями Unit Is Being Transported и Unit Is In Transport.
ответ
NazarPunk, сам уже обнаружил и описал, почему так выходит.
Решение, увы, только с помощью триггеров:
  • Нужно создать юнита через Действия - Боевая единица - Создать.
  • Затем становить количество золота через Действия - Нейтральное строение - Добавить Х золота Последнему созданному юниту.
Карта-пример:

Так что проблема в тупом редакторе, который ставит любого юнита со способностью Blighted Gold Mine с помощью CreateBlightedGoldmine.

23

» WarCraft 3 / Не проигрывается звук с триггера

Похожие вопросы:

ответ
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
ответ
Была такая же хрень, проблему решил тем, что у музыки изменил частоту.

23

» WarCraft 3 / Анимации атаки

Принятый ответ
Похожие вопросы:

ответ
тогда лучше всего удалить анимацию, наименее костыльный метод
ответ
8gabriel8:
Вроде ему наоборот надо Spell Throw -> Attack.
с Attack на Spell Throw

zetreisu, открываете модель в mdlvis жмакаете F3, выбераете нужную анимацию, переименовываете, жмакаете Enter и сохраняете модель при выходе.

23

» WarCraft 3 / Проблема с портретом

Похожие вопросы:

ответ
Ну в общем, я переустановил и лаги пропали, но хрен знает. Гарены у меня нет, вроде. Я ей точно не пользуюсь по крайней мере.
ответ
Лучше проверить, присоединён ли он к тем же костям, что и соседние вершины. Если нет — присоединить. Если да, то как сказали Melissa и nvc123.
ответ
Во первых нужно создать переменную типа boolean и два тригера при нажатии esc boolean = true выключаем первый тригер включаем второй, во втором при нажатии esc boolean=false и перед каждым проигрыванием синематик если boolean=true то ничего не делаем иначе выключаем и сворачиваемся. Как то так.. Не совсем понял что ты хочешь, но предположил что при нажатии еск должен скиповаться ролик. В общем суть объяснил дальше сам )
ответ
держи
ответ
Сделал моделаль, у меня работает. Посмотри может ты что-то сделал не так.

23

» WarCraft 3 / Цикл и Мультиборд

Похожие вопросы:

ответ
Melissa, Короче я разобрался - все проблемы были из-за переменной Total_Num_Players, она была подбита под живых игроков, а так как я был единственным живым игроком, то давала строку равную 1 (то есть 0+1 я). В общем спасибо, не додумал бы без твоей помощи до своей ошибки(у тебя ведь создаётся по заданому числу количество строк).

23

» WarCraft 3 / Помогите в созданием героя.

Похожие вопросы:

ответ
Ой, нашёл нужный триггер))))
Всем спасибо за внимание =)
ответ
Есть специальный ресурс , в котором ты можешь заказать способность , которую не можешь сделать сам.
ответ
~8gabriel8:
PT153, это лимит для одного игрока, то есть героя смогут нанять другие.
Нужно поставить таверне способность Продажа войск. Потом делаешь триггер:
Событие: Юнит вошёл в область (Вся игровая карта)
Условие: Триггеринг юнит равно Герой равно Да (можно этого не делать, просто исключает срабатывание триггера для каждого юнита)
Действия: несколько действий Если/То/Иначе
Если - Юнит тип (Триггеринг юнит) равно Какой-то Герой Из Таверны
То - Нейтральное здание - Удалить Какой-то Герой Из Таверны из таверны
Иначе - Ничего
И так для каждого типа героев в таверне.
ответ
Можно на скринах?

23

» WarCraft 3 / Удаление предметов с карты

Похожие вопросы:

ответ
почему так долго грузится карта
Потому что огромный Нестандартные объекты может тысяч или больше или Спелл герой до 100 уровень.
из них 60 загрузка просто висит на 1/5.
Если нетак? Проверь если есть файлы war3map.j папка Game\WarcraftIII, надо удалить файл. очень давно тоже 1 раз что за вылет или неправильно выполняет триггер.
Есть способы ускорить загрузку карты не экономя в редакторе объектов
Есть Widgetizer, там очень быстрая загрузка игра, но плохо работает спелл или текст.
ответ
мне было бы стыдно

23

» WarCraft 3 / Требуется помощь с редактором :(

Похожие вопросы:

ответ
Nikitos6, проверь галочки во вкладке "Вид"
ответ
как привязать переменную к существу
хэш,кс,структуры
выбор обширен
все варианты расписаны в статьях
ответ
Я сам разобрался с проблемой. Конечно тут две новые появились, но на них забью уже:
  1. ИИ не нравился герой, из-за него вообще никто не нанимался.
  2. ИИ посчитал, что улучшив главное здание, он лишается главного здания, а значит нужно его снова строить. То есть, например, улучшив ратушу до крепости, он считает, что ратуши больше нет и необходимо построить ещё одну. Потом он крепость улучшит до замка, посчитает, что разрушили крепость, улучшит до крепости ратушу№2, снова потеряет ратушу и построит уже третью.

23

» WarCraft 3 / Триггер на дроп

Похожие вопросы:

ответ
Не поленился, нашел:
Пора пилить статью на эту тему.
ответ
VetsaN, таких событий нету
надо записывать все предметы в бд и периодическим таймером отслеживать их состояние
смерть предмета можно отследить с помощью TriggerRegisterDeathEvent но её использование нежелательно
либо делай все предметы юнитами
вот статья про бд

23

» WarCraft 3 / Редактор

Похожие вопросы:

ответ
Делать свой ИИ, либо в редакторе ИИ, либо писать самому.
Ещё можешь дописать своих юнитов в стандартные скрипты.
ответ
Ты добавлял кости? Или через "повышение урона (улучшение)"? Значение последнего у юнита помечено — это добавится "базовый урон".
ответ
www.wc3c.net/tools/specs тут есть
NEW Frozen Throne expansion pack format of "war3map.w3u / w3t / w3b / w3d / w3a / w3h / w3q" The object data files (thanks PitzerMike):

23

» WarCraft 3 / Перенос карты

Похожие вопросы:

ответ
~8gabriel8:
Тут возможно четыре варианта:
  • Смотришь карты в кампании, а весь импорт находится в редакторе кампании, а не в карте;
  • Есть дополнительный mpq-архив с моделями и текстурами, который может самоподключаться, если расширение mix, asi, m3d, flt и какие-то ещё xgm.guru/p/wc3/advanced-mix-archive;
  • Ты просто не видел прежде этих моделей, а они входят в состав варика;
  • Возможен вариант, когда модели и текстуры у тебя на компе, к ним указан путь, начиная с буквы диска, но этот вариант мне кажется наименее вероятным, просто человек как-то пожаловался, что у него всё в игре отображается, а у друга нет, как раз в этом причина проблемы оказалась.

Ах да, ещё один вариант теоретически возможен, когда в карту добавили файлы, а в списке импорта их удалили, но проверять это на практике не приходилось.
ответ
BartSi, очень странно.
Нашёл проблему. В редакторе ландшафта нужно выбрать Camera Palette (там где юниты, декорации и прочее) выбрать первую строчку (камера без имени) и удалить. Тогда проблема решится. Сбросил триггеры и удалил камеру.
Ошибка из-за того, что у камеры почему-то пустое имя. Из-за этого её переменная оканчивается на _, что нельзя в JASS.

BartSi, каким конвертером 1.31 -> 1.26 пользовался?

Hodor, твой конвертер случайно не шаманит с камерами?
ответ
Смотри ресурсы пользователя Hodor

Прям на главной ссылка Конвертер карты в 1.26
ответ
Razor_dex, сконвертируй карту, потом открой в стандартном 1.26 редакторе, удали комментарий Рок Лии\Otome Renge
Для гуи-гигантов это типичная болячка, просто битый комментарий который содержит в себе информацию о нескольких действиях, считай как обычный триггер только отображается как комментарий
Возникает такое скорее всего при копировании

P.S. странно что редакторы до 1.31 не обращают внимания на такой баг

23

» WarCraft 3 / Отследить высоту юнита

Похожие вопросы:

ответ
Кароч
есть инфа
что если хочешь стандартный скилл с небольшим изменением
но не можешь отловить его цели
то можно тупо ловить урон
при этом кастуя скилл с даммика
и вылавливать урон только от даммика
да?
Но это вариант для тех кому лень...
а тебе я так вижу не лень

23

» WarCraft 3 / Краш карты при загрузке

Принятый ответ
Похожие вопросы:

ответ
А во, нашёл - атвор нафига пихать юнитов за границу обзора? От того и вылетает, убери всех юнитов с краёв карты, ваще чтобы даже близко не было. Так же увеличь границы карты, чтобы всё влезло.
По-моему дело в юнитах красного игрока. Удалив этот отряд орков с огром все ок работает. Перемещение не помогает.
ответ
MPQ Master'ом открывается
там и искать нужную модель и удалять
ответ
Крашлог и карту желательно, мб где то пропустили скобку?
ответ
Нашёл иной способ, всё оказалось куда легче)

23

» WarCraft 3 / Вопросы по редактору

Принятый ответ
Похожие вопросы:

ответ
Ты добавлял кости? Или через "повышение урона (улучшение)"? Значение последнего у юнита помечено — это добавится "базовый урон".
ответ
"Приоритет" для ИИ, "Построение" отвечает за расположение в отряде (когда выделяешь группу юнитов на карте: герои, ближние, дальние и т.д.)
ответ
Насколько я понял, тебе нужно просто сменить текстуру. Для этого тебе по меньшей мере нужна текстура. Можно взять либо стандартную, либо создать самому (что довольно просто, если знать как).
Чтобы создать текстуру, возьми любое изображение, открой его в ФШ и сохрани как tga 32 бит с размером до 512х512 (вроде бы можно делать любой размер, не превышающий 1024х768, но я советую сохранять пропорции и делать размер не больше 512х512, или кратных половине этого числа (256/128/64/32) , за тем открой в War3 Image Extractor и переведи формат tga в blp. Потом открываешь модельку - редактор текстур и переименовываешь нужную текстуру в ту которая тебе нужна (они должны быть в одной папке) жмешь - Enter - .

23

» WarCraft 3 / Видимость воды

Похожие вопросы:

ответ
Вообще ai скрипты в WC3 довольно деревянные. Вам нужен универсальный ИИ, или для конкретной карты? Если второе, то проще напрямую через обычный jass указывать где должно строить верфи и прочее.
Кстати, сами Близзы не смогли решить проблему с транспортными кораблями: в мили ИИ их не нанимает и не строит, как и в кампании. Используются либо дирижабли, либо амфибии. Корабли строятся только боевые, по принципу казарм. Проверьте сами четвертую главу за нежить в TFT.
ответ
ответ
~8gabriel8:
Сделал через Integer Comparsion, где количество нужных юнитов, рыбацких лодок, в области над магическим кругом больше 0.
ответ
Steal nerves:

23

» WarCraft 3 / Переменная и целочисленная

Похожие вопросы:

ответ
Что такое "назначить пользовательский параметр юнита или предмета" и как им пользоваться?
Используется для сохранения каких-нибудь своих данных в этот конкретный предмет или юнита
Добрые люди, как присвоить глобальной переменной (целочисленной) цену определенного предмета (так чтобы если изменить цену в редакторе объектов, то в редакторе триггеров она сама изменялась) или какая главная характеристика определенного героя (разум, сила, ловкость).
Никак, только руками указывать или использовать это xgm.guru/p/fly-data
ответ
Steal nerves:
Мне не нужно сохранять героя, в этом то и проблема, так бы я просто скопировал чужую наработку.
Все, мне помог один очень хороший человек.
ответ
8gabriel8,
Если что, скидывай карту.
Беда в том, что эта карта из кампании, там всё очень много весит, потому не буду.
PT153,
ну как там дела?
Пока никак, ибо из-за сессии отложил редактор в сторону (собственно, даже сюда времени зайти не было, к сожалению)
Рад, что ты предложил выход, но я, боюсь, твой код себе никак не перенесу, ибо, как писал в вопросе, лишь на GUI могу работать.
8gabriel8,
мне кажется, проблема не в этом триггере, а в другом, который запускает триггеры и таймеры.
Триггер, запускающий таймер, вряд ли многое испортить может
Мдаааа... Я свою ошибку таки нашёл. Она была в самом тупом месте из всех возможных.
Я действительно не понимаю, это у меня голова не работает совершенно, или в редакторе какие-то баги
Цитата из вопроса, у меня не работает голова.
Так вот, это я дурак полный.
Запихнул обнуление своей переменной ВНИМАНИЕ! в триггер, который игрокам-компьютерам каждые 2 секунды обновляет ресурсы. А вместе с этим и обнуляет снова и снова мою переменную. Обнаружил ли я это через дебаги? Нет, просто от скуки и безнадёжности положения начал прокручивать и листать все триггеры.
Спасибо всем, кто пытался помочь, это было очень приятно) Мне жаль, что вы ломали голову и тратили время впустую по моей глупости и невнимательности.
ответ
Простым способом это не сделаешь, т.к нельзя отловить кол-во полученного золото с убийства (патч 1.26). Но, если игрок не получает больше неоткуда золото, кроме убийства крипов, то можно ловить изменения голды игрока.
ответ
Black Soul:
Вот пример того, как можно сделать:
Карта: